home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / demos / bits93.zip / FISH.ASM < prev    next >
Assembly Source File  |  1993-10-06  |  3KB  |  177 lines

  1.  
  2.                 .model small
  3.  
  4. .386
  5.  
  6.                 .data
  7.  
  8. fish_flag       db 1
  9.  
  10.                 even
  11.  
  12. xv              dw 1
  13. yv              dw 0
  14. xp              dw 160
  15. yp              dw 110
  16. addr            dw 0
  17. old_addr        dw 0
  18.  
  19. fish_buf        db 60*60 dup(0)
  20.  
  21.                 align 4
  22.  
  23. under_fish      db 64*60 dup(0)
  24.  
  25.  
  26. fish_table      label word
  27.  
  28.                 even
  29.  
  30.                 include fish.tbl
  31.  
  32.                 extrn dest_seg:word
  33.  
  34.                 .code
  35.  
  36.                 public do_bounce,do_fish,addr,blank_fish
  37.  
  38.  
  39. blank_fish      proc near
  40.  
  41.                 test fish_flag,-1
  42.                 jnz @@skip_copy
  43.  
  44.                 cld
  45.  
  46.                 mov esi,offset under_fish
  47.                 mov es,dest_seg
  48.                 movzx edi,old_addr
  49.  
  50.                 mov dx,60
  51. @@replace_next_line:
  52.                 mov ecx,64/4
  53.  
  54.                 rep movsd
  55.                 add edi,320-64
  56.                 dec dx
  57.                 jnz @@replace_next_line
  58.  
  59. @@skip_copy:
  60.  
  61.                 mov fish_flag,0
  62.  
  63.                 ret
  64.  
  65. blank_fish      endp
  66.  
  67.  
  68. do_fish         proc near
  69.  
  70.                 mov bp,di
  71.                 cld
  72.  
  73.                 mov edi,offset under_fish
  74.                 push ds
  75.                 movzx esi,addr
  76.                 and esi,not 3
  77.                 mov old_addr,si
  78.                 mov ds,dest_seg
  79.                 mov ax,seg fish_buf
  80.                 mov es,ax
  81.                 mov dx,60
  82. @@1:
  83.                 mov ecx,64/4
  84.                 rep movsd
  85.  
  86.                 add esi,320-64
  87.  
  88.                 dec dx
  89.                 jnz @@1
  90.  
  91.                 pop ds
  92.  
  93.                 mov dx,60
  94.                 mov bx,offset fish_table
  95.                 mov si,addr
  96.                 mov di,offset fish_buf
  97.  
  98.                 mov es,dest_seg
  99. @@next_line:
  100.                 mov cx,60
  101.  
  102. @@next_column:
  103.                 mov si,[bx]
  104.                 mov al,es:[si+bp]
  105.                 mov [di],al
  106.                 inc di
  107.                 add bx,2
  108.                 dec cx
  109.                 jnz @@next_column
  110.  
  111.                 add si,320-60
  112.  
  113.                 dec dx
  114.                 jnz @@next_line
  115.  
  116.                 mov dx,60
  117.                 mov di,addr
  118.                 mov si,offset fish_buf
  119.  
  120. @@update_line:
  121.  
  122.                 mov cx,60/2
  123.                 rep movsw
  124.  
  125.                 add di,320-60
  126.                 dec dx
  127.                 jnz @@update_line
  128.  
  129.                 ret
  130.  
  131. do_fish         endp
  132.  
  133.  
  134. do_bounce       proc near
  135.  
  136.                 mov ax,xv
  137.                 add xp,ax
  138.  
  139.                 cmp xp,260
  140.                 jbe xp_ok
  141.  
  142.                 neg xv
  143.                 neg ax
  144.                 add xp,ax
  145.  
  146. xp_ok:
  147.                 mov ax,yv
  148.                 add yp,ax
  149.  
  150.                 cmp yp,252*3
  151.                 jbe yp_ok
  152.  
  153.                 neg yv
  154.                 neg ax
  155.                 add yp,ax
  156.  
  157. yp_ok:
  158.                 add yv,1
  159.  
  160.                 mov ax,yp
  161.                 shr ax,3
  162.                 xchg al,ah
  163.                 mov addr,ax
  164.                 shr ax,2
  165.                 add addr,ax
  166.                 mov ax,xp
  167.                 add addr,ax
  168.  
  169.                 ret
  170.  
  171. do_bounce       endp
  172.  
  173.  
  174.                 end
  175.  
  176.  
  177.